Normals

Labels

ASCII
Normal
Binary
nrml (= 0x6E726D6C )

Data Format

Vector3D     normal
Field descriptions
normal
The surface normal at a vertex. This vector should be normalized.

Data Size

12

Description

The surface normal at a vertex of a verticed object is the average of the normals to the faces of that object sharing that vertex. This normal is obtained by normalizing the relevant face normal vectors, adding those vectors together, and normalizing the result. The surface normal vector is used in Gouraud shading calculations.

Parent Hierarchy

Element, attribute.

Parent Objects

Attribute sets. A normal always has a parent object.

Child Objects

None.

Example

Container (
 AttributeSet ( )
 Normal ( -1 0 0 ) 
)

Ambient Coefficients

Labels

ASCII
AmbientCoefficient
Binary
camb (= 0x63616D62 )

Data Format

Float32    ambientCoefficient
Field descriptions
ambientCoefficient
The value of this field must lie in the closed interval [0, 1]. 0 is the minimum value, 1 is the maximum value.

Data Size

4

Description

The ambient coefficient is a measure of the level of an object's reflection of ambient light. Ambient coefficients may be assigned separately and selectively to the facets and vertices of faceted and verticed objects, and the same ambient coefficient may be assigned to several objects by placing the coefficient in a suitably located attribute set.

Parent Hierarchy

Element, attribute.

Parent Objects

Attribute sets. An ambient coefficient always has a parent object.

Child Objects

None.

Example

Container (
 AttributeSet ( )
 AmbientCoefficient ( 0.5 )
 DiffuseColor ( 1 1 1 )
)

Highlight State

Labels

ASCII
HighlightState
Binary
hlst (= 0x686C7374 )

Data Format

Boolean     highlighted
Field descriptions
highlighted
A value of True indicates that affected geometric objects are to receive the highlighting effects specified by an associated highlight style object during rendering. A value of False indicates that the affected objects are not to receive those effects.

Data Size

4

Description

A highlight state object is used to specify whether affected geometric objects are to receive highlighting effects during rendering. The relevant highlighting effects are specified by an associated highlight style object. If a geometric object's highlight state is set to True (and an associated highlight style object has been defined), then any renderer that supports highlighting will apply the attributes specified by the highlight style object to that geometric object when rendering; these attributes will override incompatible attributes assigned to that geometric object by other means. A highlight state object is idle if no associated highlight style object exists. See the section "Highlight Styles" on page -31 for complete details on highlight style objects.

Parent Hierarchy

Element, attribute.

Parent Objects

Attribute sets. A highlight state object always has a parent object.

Child Objects

None.

Example

Container (
 Container (
  HighlightStyle ( )          # highlight style object
  Container (
   AttributeSet ( )
   DiffuseColor ( 1 0 0 )         # highlighting: red color
  )
 )
 Container (
  Polygon ( ... )
  Container (
   AttributeSet ( )
   DiffuseColor ( 0 0 1 )       # polygon's normal color: blue
   HighlightState ( True )       # polygon is to be highlighted
  )          and will appear red when
 )           rendered

Attribute Sets


Attribute Sets

Labels

ASCII
AttributeSet
Binary
attr (= 0x61747472 )

Data Format

No data.

Data Size

0

Description

An attribute set is a collection of attributes to be applied to an object, a facet of an object, or a vertex of an object. An attribute set may include attribute objects of as many types as desired, but may include only one attribute object of any particular type. Thus, an attribute set may contain both a diffuse color attribute and a specular color attribute, but may not contain two diffuse color attributes.

Though any attribute object may be included in any attribute set, some attributes cannot sensibly be applied to objects of certain types. For example, a normal cannot sensibly be applied to an entire view, as encapsulated in a view hints object. An application should disregard such attribute specifications.

Attributes may be assigned to other objects only indirectly, through the use of attribute sets. Attributes are included in an attribute set by placing the attribute objects and the attribute set object together in a container. The attributes in that set may be assigned to a geometric object by placing the relevant container and the geometric object together in a further container.

An attribute set may also be placed in a cap attribute set of any type; in this way, attributes may be assigned separately and selectively to the caps and face of a cone or cylinder. Attribute sets may also be placed in face, geometry, and vertex attribute set lists; in this way, attributes may be assigned separately and selectively to the facets, segments, and vertices of geometric objects having those features. An attribute set may also be placed in a group. Unless overridden, the attributes in an attribute set placed in a hierarchically structured group are inherited by objects at lower levels in the hierarchy of that group. (An application should not permit an attribute to be inherited by an object to which that attribute cannot sensibly be applied.) See the sections on cap attribute sets, attribute set lists, and groups for complete details on the composition of these objects.

Parent Hierarchy

Shared, set.

Parent Objects

Any geometric object, cap attribute set, attribute set list, or group. An attribute set always has a parent object.

Child Objects

Attributes: ambient coefficient, diffuse color, specular color, specular control, transparency color, highlight state, shading UV, surface UV (all optional).

Example

Container (
 Polygon (...)      # all attributes in set applied to polygon
 Container (      # container puts attributes in set
  AttributeSet ( )      
  AmbientCoefficient (...)
  DiffuseColor (...)
  SpecularColor (...)
  SpecularControl (...)
  Normal (...)
 )
)

Top Cap Attribute Sets

Labels

ASCII
TopCapAttributeSet
Binary
tcas (= 0x74636173 )

Data Format

No data.

Data Size

0

Description

A top cap attribute set is used to attach attributes to the top cap of a cylinder that has an optional top cap. The attributes to be assigned to the cap are placed in a regular attribute set in the usual manner. Then the container holding the regular attribute set and the attributes is placed in the cap attribute set by including that container and the cap attribute set in a further container.

The attributes associated with a top cap attribute set are not drawn if the parent object lacks a top cap.

Parent Hierarchy

Data, cap data.

Parent Objects

Cylinder (always).

Child Objects

Attribute set (optional). An empty top cap attribute set has no effect.

Example

Container (
 Cylindner ( ... )
 Caps ( Top )
 Container (
  TopCapAttributeSet ( )
  Container (
   AttributeSet ( )
   DiffuseColor ( 0.2 0.9 0.4 )
  )
 )
)

Bottom Cap Attribute Sets

Labels

ASCII
BottomCapAttributeSet
Binary
bcas ( = 0x62636173 )

Data Format

No data.

Data Size

0

Description

A bottom cap attribute set is used to attach attributes to the bottom cap of a cone or cylinder that has an optional bottom cap. The attributes to be assigned to the cap are placed in a regular attribute set in the usual manner. Then the container holding the regular attribute set and the attributes is placed in the cap attribute set by including that container and the cap attribute set in a further container.

The attributes associated with a bottom cap attribute set are not drawn if the parent object lacks a bottom cap.

Parent Hierarchy

Data, cap data.

Parent Objects

Cone, cylinder (always).

Child Objects

Attribute set (optional). An empty bottom cap attribute set has no effect.

Example

Container (
 Cylinder ( )
 Caps ( Bottom )
 Container (
  BottomCapAttributeSet ( )
  Container (
   AttributeSet ( )
   DiffuseColor ( 0.2 0.9 0.4 )
  )
 )
)

Face Cap Attribute Sets

Labels

ASCII
FaceCapAttributeSet
Binary
fcas (= 0x66636173 )

Data Format

No data.

Data Size

0

Description

A face cap attribute set is used to attach an attribute set to the surface of a cone or cylinder but not to its caps. This object is used to apply attributes to a cone or cylinder in a way that does not cause them to be inherited by its caps.

Parent Hierarchy

Data, cap data.

Parent Objects

Cone, cylinder (always).

Child Objects

Attribute set (optional). An empty face cap attribute set has no effect.

Example

Container (
 Cylinder ( )
 Caps ( Top )
 Container (
  AttributeSet ( )
  SurfaceShader (...)
 )
 Container (
  FaceCapAttributeSet ( )
  Container (
   AttributeSet ( )
   DiffuseColor ( 1 0 0 )
  )
 )
)

Attribute Set Lists


Geometry Attribute Set Lists

Labels

ASCII
GeometryAttributeSetList
Binary
gasl ( = 0x6761736C )

Data Format

Uns32     nObjects
PackingEnum     packing
Uns32     nIndices
Uns     indices[nIndices]
Field descriptions
nObjects
The total number of instances of the relevant feature of the parent geometric object possessed by that object. If the parent object is a polyline, the relevant feature is polyline segment, so the value of this field is the total number of segments of the polyline.
packing
See the section "Face Attribute Set Lists" on page 1-137 for a complete explanation of this field.
nIndices
The size of the following array. See the section "Face Attribute Set Lists" on page 1-137 for a complete explanation of this field.
indices[]
An array of indices. A standard method of indexing instances of the relevant feature of the parent object is assumed to have been established, as with the segments of a polyline. The values of this field are the indices of such instances and are to be specified in increasing order. See the section "Face Attribute Set Lists" on page 1-137 for a complete explanation of this field.

Data Size

16 + nIndices * sizeof(Uns) + padding

Description

A geometry attribute set list is used to assign sets of attributes separately and selectively to distinct instances of a tractable feature of geometric objects. A standard method of indexing the instances of such a feature is presupposed by a geometry attribute set list.

At present, the polyline is the only primitive geometric object to which a geometry attribute set list may be attached. The attribute sets appearing in a geometry attribute set list are assigned to the line segments of which the polyline is composed, not to the vertices of the polyline. (To attach attributes to the vertices, use a vertex attribute set list.)

The standard index of the segments of a polyline is described in the section "Polylines." To recapitulate, the segment having index i is the segment having as its endpoints vertices[i] and vertices[i+1].

Parent Hierarchy

Data, attribute set list.

Parent Objects

Polyline (always).

Child Objects

Attribute sets (required). See the section "Face Attribute Set Lists" on page 1-137 for a complete explanation of how child objects are correlated with instances of the relevant features of the parent geometric object.

Example

Container (
 PolyLine (...)           #parent geometric object

 Container (
  GeometryAttributeSetList ( )
  6 exclude 4      # there are 6 segments; exclude 4 of them
  0 2 3 5   # indices of the segments to be excluded
  #child objects
  Container (
   AttributeSet      '   #applied to segment 1
   DiffuseColor (...)
  )
  Container (
   AttributeSet         #applied to segment 4
   DiffuseColor (...)
  )
 )
)

Face Attribute Set Lists

Labels

ASCII
FaceAttributeSetList
Binary
fasl (= 0x6661736C )

Packing enum data type

PackingEnum 
The permitted values are include ( = 0x00000000) and exclude ( = 0x00000001).

Data Format

Uns32     nObjects
PackingEnum     packing
Uns32     nIndices
Uns32     indices[nIndices]
Field descriptions
nObjects The total number of faces or facets of the parent object. If the parent object is a box, the value of this field is 6. If the parent object is a trigrid, the value of this field is the number of vertices used to define that trigrid, which is also the number of facets of the trigrid. If the parent object is a mesh, the value of this field is the number of faces of that mesh.
packing
The value of this field determines whether the facets of the parent object of the set list to receive attributes are those whose facet indices appear in the array indices[] or are those whose indices do not appear in that array. A value of include indicates the former; exclude indicates the latter. You may wish to select include if most facets of the parent object are not to receive any attributes. Should any other value appear in this field, the entire set list and all of its child objects should be ignored.
nIndices
The number of facets of the parent object to which the action specified in the packing field is to be applied; that is, the number of facets to be included in (or excluded from) the group of facets to receive attributes. The value of this field may not exceed that of the nObjects field.
indices[]
An array of facet indices. The values in the fields of this array are the indices of those facets of the parent object to be subject to the action of the value of the packing field, in the event that the number of facets to receive attributes is less than the value in the nObjects field. The size of this array must equal the value in the nIndices field. Indices are to be entered in fields of this array in increasing order; no index may appear more than once. If the value in the packing field is include, then the field values represent those facets which are to receive attributes in consequence of the set list. If the value in the packing field is exclude, then the field values represent those facets that are not to receive attributes in consequence of the set list. If the value in the packing field is exclude and the value in the nIndices field is 0, then this field may be left unspecified; similarly, if the value in the packing field is include and the value in the nIndices field is equal to the value in the nObjects field, then this field may be left unspecified.

Data Size

16 + nIndices * sizeof(Uns) + padding

Description

A face attribute set list is used to assign sets of attributes separately and selectively to one or more facets of a multi-faceted geometric object (that is, to the faces of a box or mesh, or to the triangular facets of a trigrid). A face attribute set list may not be assigned to a general polygon. The listed attribute sets themselves occur as child objects of the set list object and are correlated with facets of the parent object of the set list as described later in this section. You may think of the child objects as the items in the set list; officially, the set list is the object defined in this section.

For convenience, the packing field allows you to choose whether to specify (by inclusion) the facets to receive attributes or to specify (by exclusion) the facets not to receive attributes. The number of child objects you must specify is equal to the number of facets actually to receive attributes, whichever option you select for the packing field. You may wish to specify by inclusion rather than by exclusion if most facets are not to receive any attributes. This option can reduce the size of the indices[] array, save work, and save disk space.

If the value of the packing field of a set list is include, then the number of child objects of that set list must equal the value of the nIndices field of that set list. If the value of the packing field is exclude, then the number of child objects must equal the (absolute value of) the difference between the values of the nObjects and nIndices fields.

Child objects are correlated with facets of the parent object of the set list as follows. Let the child objects of the set list be enumerated in the order of their occurrence in the metafile. If the value of the packing field is include, then the ith child object is correlated with the facet whose index is the value of the ith field of the array indices[], or indices[i-1]. If the value of the packing field is exclude, then the ith child object is correlated with the facet whose facet index is the ith element of the sequence (in increasing order) of facets whose indices do not appear in the array indices[]. For example, suppose that the parent object is a mesh having 17 faces, packing is set to exclude, nIndices is 11, and the elements of indices[] are 1, 2, 4, 6, 7, 8, 11, 12, 13, 14, 16. Then six facets are to receive attributes: facets 0, 3, 5, 9, 10, 15, so the set list will have six child objects c0,..., c5. The third child object (that is, c2) is correlated with facet 5, and, in general, the ith element of the sequence <c0,..., c5> is correlated with the ith element of the sequence <0, 3, 5, 9, 10, 15>.

The index used to enumerate the facets of a multifaceted geometric object is described in the section pertaining to that object. Indices begin with zero, so that the index of the i+1st facet of a multifaceted object is i. The index used to construct an attribute set list must be standard.

Parent Hierarchy

Data, attribute set list.

Parent Objects

Box, mesh, trigrid.

Child Objects

Attribute sets (required). The number of child objects is determined in the manner indicated in the description of a face attribute set list.

Example

Container (
 TriGrid (...)           #parent object

 Container (
  FaceAttributeSetList ( )
  6       #nObjects      (parent has six facets;
  exclude       #packing     (exclude
  4       #nIndices     (four of them:
  0 2 3 5    #indices[]     (these four.)
  #begin list
  Container (
   AttributeSet           #apply to facet 1
   DiffuseColor (...)
  )
  Container (
   AttributeSet           #apply to facet 4
   DiffuseColor (...)
  #end list
  )
 )
)

Vertex Attribute Set Lists

Labels

ASCII
VertexAttributeSetList
Binary
vasl (= 0x7661736C )

Data Format

Uns32     nObjects
PackingEnum     packing
Uns32     nIndices
Uns     indices[nIndices]
Field descriptions
nObjects
The number of vertices of the parent geometric object.
packing
See the section "Face Attribute Set Lists" on page 1-137 for a complete explanation of this field.
nIndices
Size of the following array. See the section "Face Attribute Set Lists" on page 1-137 for a complete explanation of this field.
indices[]
An array of vertex indices. See the section "Face Attribute Set Lists" on page 1-137 for a complete explanation of this field.

Data Size

16 + nIndices * sizeof(Uns) + padding

Description

A vertex attribute set list is used to assign sets of attributes separately and selectively to the vertices of a verticed geometric object. Among the primitive metafile geometric objects, the following have vertices: general polygons, lines, meshes, polygons, polylines, triangles, and trigrids.

The index used to enumerate the vertices of an object of one of these types is described in the section on objects of that type. To recapitulate, in all cases the vertices are enumerated in the order of their occurrence in the specification of the parent geometric object. In the case of a general polygon, the index does not distinguish between contours.

Parent Hierarchy

Data, attribute set list.

Parent Objects

General polygon, line, mesh, polygon, polyline, triangle, trigrid. A vertex attribute set list always has a parent object.

Child Objects

Attribute sets (required). See the section "Face Attribute Set Lists" on page 1-137 for a complete explanation of how child objects are correlated with aspects of the parent geometric object.

Example

Container ( 
 GeneralPolygon (         # parent geometric object
  2        # nContours
  #contour 0
  3        # nVertices, contour 0
  -1 0 0       # vertex 0
  1 0 0       # vertex 1
  0 1.7 0       # vertex 2
  #contour 1
  3        # nVertices, contour 1
  -1 0.4 0       # vertex 3
  1 0.4 0       # vertex 4
  0 2.1 0        # vertex 5
 )
 Container ( 
  VertexAttributeSetList ( 6 Exclude 2 0 4 )             # set list
  Container (             # child objects
   AttributeSet ( )         # vertex 1 (contour 0)
   DiffuseColor ( 0 0 1 )
  )
  Container ( 
   AttributeSet ( )         # vertex 2 (contour 0)
   DiffuseColor ( 0 1 1 )
  )
  Container ( 
   AttributeSet ( )         # vertex 3 (contour 1)
   DiffuseColor ( 1 0 1 )
  )
  Container (   
   AttributeSet ( )         # vertex 5 (contour 1)
   DiffuseColor ( 1 1 0 )
  )
 )
 Container ( 
  AttributeSet ( )
  DiffuseColor ( 1 1 1 )
 )
)

Styles


Backfacing Styles

Labels

ASCII
BackfacingStyle
Binary
bckf ( = 0x62636B66 )

Backfacing styles

Both     0x00000000
Culled     0x00000001
Flipped     0x00000002
Constant descriptions

Both
A renderer should draw shapes that face toward and away from the camera. If a shape has only frontfacing attributes, those attributes are used for both sides of the shape.
Culled
A renderer should not draw shapes that face away from the camera (this is not the same as hidden surface removal).
Flipped
A renderer should draw shapes that face toward and away from the camera. If a shape has only frontfacing attributes, those attributes are used for both sides of the shape, but the normals of backfacing shapes are inverted, so that they face toward the camera.

Data Format

BackfacingEnum        backfacing
backfacing
The value in this field must be one of the three constants defined above.

Description

A scene's backfacing style determines whether or not a renderer draws shapes that face away from a scene's camera. This style object defines some of the characteristics of a renderer and generally applies to all of the objects in a model.

Parent Hierarchy

Shared, shape, style.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup ( OrderedDisplayGroup ( ) )
 Matrix ( ... )
 BackfacingStyle ( Both )
 Mesh ( ... )
 Mesh ( ... )
EndGroup ( )

Interpolation Styles

Labels

ASCII
InterpolationStyle
Binary
intp ( = 0x696E7470 )

Interpolation Styles

None     0x00000000
Vertex     0x00000001
Pixel     0x00000002
Constant descriptions

None
No interpolation is to occur. The renderer is to apply each effect uniformly across a surface.
Vertex
The renderer is to interpolate values linearly across a verticed surface, using the values at the vertices.
Pixel
The renderer is to calculate a value of each effect for every pixel in the image.

Data Format

InterpolationStyleEnum         interpolationStyle
Field descriptions
interpolationStyle
The value in this field must be one of these constants: None, Vertex, or Pixel.

Data Size

4

Description

A scene's interpolation style determines the method of interpolation a renderer uses when applying lighting or other shading effects to a surface. A value of None causes the surfaces of a model to have a faceted appearance; the other two values cause its surfaces to be rendered smoothly.

Parent Hierarchy

Shared, shape, style.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup ( DisplayGroup ( ) )
 InterpolationStyle ( Vertex )
 Container (
  Triangle ( ... )
  VertexAttributeSetList ( ... )
  .
  .
  .
 )
EndGroup ( )

Fill Styles

Labels

ASCII
FillStyle
Binary
fist (= 0x66697374 )

Fill StyleS

Filled     0x00000000
Edges     0x00000001
Points     0x00000002
Empty     0x00000003
Constant descriptions

Filled
The renderer should draw shapes as solid filled objects.
Edges
The renderer should draw shapes as the sets of lines that define the edges of surfaces.
Points
The renderer should draw shapes as the sets of points that define the vertices of surfaces.
Empty
[To be supplied.]

Data Format

FillStyleEnum      fillStyle
Field descriptions
fillStyle
The value of this field must be one of these constants: Filled, Edges, Points, Empty.

Data Size

4

Description

A scene's fill style determines whether an object is drawn as a solid filled object or is decomposed into a set of edges or points.

Parent Hierarchy

Shared, shape, style.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup ( DisplayGroup ( ) )
 FillStyle ( Edges )
 Container (
  Mesh ( ... )
  VertexAttributeSetList ( ... )
 )
 Torus ( ... )
EndGroup( )

Highlight Styles

Labels

ASCII
HighlightStyle
Binary
high (= 0x68696768 )

Data Format

No data.

Data Size

0

Description

A highlight style object is used to specify attributes to be applied to selected geometric objects during rendering. Any renderer that supports highlighting will use the attributes specified by a highlight style object to override incompatible attributes assigned to affected geometric objects in other ways. The attributes specified by a highlight style object are applied to a geometric object only if that geometric object also has a highlight state attribute that is set to True. See the section "Highlight State" on page -9 for complete details on highlight state attributes.

Parent Hierarchy

Shared, shape, style.

Parent Objects

None.

Child Objects

Attribute set (required).

Example

BeginGroup ( DisplayGroup ( ) )
 Container (
  HighlightStyle ( )          # highlight style object
  Container (
   AttributeSet ( )
   DiffuseColor ( 0 0 1 )         # highlight attribute
  )
 Container (
  Polygon ( ... )
  Container (
   AttributeSet ( )
   DiffuseColor ( 1 0 0 )
   HighlightState ( True )       # polygon will be highlighted
  )
 )
 Container (
  Box
  Container (
   AttributeSet ( )
   DiffuseColor ( 0 1 0 )
   HighlightState ( False ) # box will not be highlighted
  )
 )
 Container (
  Line ( ... )        # line will not be highlighted
  Container (          
   AttributeSet ( )
   DiffuseColor ( 1 1 1 )
  )
 )
)
EndGroup ( )

Subdivision Styles

Labels

ASCII
SubdivisionStyle
Binary
sbdv (= 0x7364636C )

Subdivision Method Enum Data Type

Constant
0x00000000
WorldSpace
0x00000001
ScreenSpace
0x00000002
Note
There are two data formats. ·

First Data Format

SubdivisionMethodEnum          subdivisionMethod
Float32          value1
subdivisionMethod
The value in this field must be one of the specifiers WorldSpace or ScreenSpace. A value of WorldSpace indicates that the renderer subdivides a curve (or surface) into polylines (or polygons) whose sides have a world-space length that is at most as large as the value specified in the value1 field. A value of ScreenSpace indicates that the renderer subdivides a curve (or surface) into polylines (or polygons) whose sides have a length that is at most as large as the number of pixels specified in the value1 field.
value1
For world-space subdivision, the maximum length of a polyline segment (or polygon side) into which a curve (or surface) is subdivided. For screen-space subdivision, the maximum number of pixels in a polyline segment (or polygon side) into which a curve (or surface) is subdivided. The value in this field should be greater than 0.

Data Size

8

Second Data Format

SubdivisionMethodEnum          subdivisionMethod
Uns32          value1
Uns32          value2
subdivisionMethod
The value in this field must be the specifier Constant. This value indicates that the renderer subdivides a curve into a number of polyline segments and a surface into a mesh of polygons.
value1
The number of polylines into which a curve should be subdivided, or the number of vertices in the u parametric direction of the polygonal mesh into which a surface is divided. The value in this field should be greater than 0.
value2
The number of vertices in the v parametric direction of the polygonal mesh into which a surface is divided. The value in this field should be greater than 0.

Data Size

12

Description

A scene's subdivision style determines how a renderer decomposes smooth curves and surfaces into polylines and polygonal meshes for display purposes. Different specifiers and numerical values determine different degrees of fineness of approximation.

Parent Hierarchy

Shared, shape, style.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup ( DisplayGroup ( ) 
 SubdivisionStyle ( Constant 32 32 )
 Ellipsoid ( ... )
 )
 Container (
  SubdivisionStyle ( WorldSpace 12 )
  Box ( ... )
 )
EndGroup ( )

Orientation Styles

Labels

ASCII
OrientationStyle
Binary
ornt (= 0x6F726E74 )

ORIENTATION STYLES

CounterClockwise       0x00000000
Clockwise       0x00000001
Constant descriptions

CounterClockwise
The front face of a polygonal shape is defined using the righthand rule.
Clockwise
The front face of a polygonal shape is defined using the lefthand rule.

Data Format

OrientationEnum          orientation
Field descriptions
orientation
The value in this field must be one of these constants: CounterClockwise, Clockwise.

Data Size

4

Description

A scene's orientation style determines which side of a planar surface is considered (by the renderer) to be the "front" side. This style may be changed in order to change the orientation of a polygonal shape.

Parent Hierarchy

Shared, shape, style.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup( DisplayGroup ( ) )
 OrientationStyle ( Clockwise )
 .
 .
 .
EndGroup ( )

Receive Shadows Styles

Labels

ASCII
ReceiveShadowsStyle
Binary
rcsh (= 0x72637368 )

Data Format

Boolean     receiveShadows
Field descriptions
receiveShadows
A value of True indicates that objects are to receive shadows; a value of False indicates that objects are not to receive shadows.

Data Size

4

Description

A scene's receive shadows style specifies whether or not obscured objects shall receive shadows in rendering.

Note
Some lights also specify whether or not the objects they illuminate shall cast shadows. However, objects in the scope of a receive shadows style set to False do not receive shadows, whether or not they are also appropriately situated to receive shadows from a light set to cast shadows. ·

Parent Hierarchy

Shared, shape, style.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup ( DisplayGroup ( ) )
 PointLight ( ... )
 ReceiveShadows ( True )
 Mesh ( ... )
 Mesh ( ... )
 Mesh ( ... )
EndGroup ( )

Pick ID Styles

Labels

ASCII
PickIDStyle
Binary
pkid (= 0x706B6964 )

Data Format

Uns32    id
Field descriptions
id
An integer, supplied by your application.

Data Size

4

Description

A pick ID style object is used to correlate the class of objects within its scope with an integer. This integer may be included in the specification of a picking operation to restrict that operation to the objects in that class. A pick ID style object must be placed in a group or container to have effect; the scope of a pick ID style object placed in a group (or container) is the class of objects located between that style object and the end of that group (or container).

Parent Hierarchy

Shared, shape, style.

Parent Objects

None.

Child Objects

None.

Example

PickIDStyle ( 8 )

Pick Parts Styles

Labels

ASCII
PickPartsStyle
Binary
pkpt (= 0x706B7074 )

pick parts STYLES

Object
0x00000000
Face
0x00000001
Edge
0x00000002
Vertex
0x00000003
Constant descriptions

Object
The hit list for picking contains only whole objects.
Face
The hit list for picking contains faces of objects.
Edge
The hit list for picking contains edges of objects.
Vertex
The hit list for picking contains vertices of objects.

Data Format

PickPartsFlags      pickParts
Field descriptions
pickParts
The value in this field must be one of the four flags specified in the PickPartsFlags data enumeration.

Data Size

4

Description

A pick parts style object is used to specify the sort of object to be picked during the operation of picking. The flags Face, Edge, and Vertex are used to pick meshes; the flag Object is used to pick all other objects. The default flag is Object.

Parent Hierarchy

Shared, shape, style.

Parent Objects

None.

Child Objects

None.

Example

PickPartsStyle ( Object )

Transforms


Translate Transforms

Labels

ASCII
Translate
Binary
trns (= 0x74726E73 )

Data Format

Vector3D     translate
Field descriptions
translate
A translation in three dimensions, specified by a vector.

Data Size

12

Description

A translate transform moves an object along the x, y, and z axes by the values specified by its translation vector. Thus, the transform Translate ( i j k ) moves each point P = <Px, Py, Pz> in its scope to the point P' = <Px+i, Py+j, Pz+k>.

Parent Hierarchy

Shared, shape, transform.

Parent Objects

None.

Child Objects

None.

Example

Translate ( -1 1 0 )

Scale Transforms

Labels

ASCII
Scale
Binary
scal ( = 0x7363616C )

Data Format

Vector3D     scale
Field descriptions
scale
A scaling vector.

Data Size

12

Description

A scale transform scales an object along the x, y, and z axes by the values specified by its scaling vector.

Parent Hierarchy

Shared, shape, transform.

Parent Objects

None.

Child Objects

None.

Example

Scale ( 2 2 2 )

Matrix Transforms

Labels

ASCII
Matrix
Binary
mtrx ( = 0x6D747278 )

Data Format

Matrix4x4     matrix
Field descriptions
matrix
A 4-by-4 array specifying a custom matrix transformation. The specified matrix should be invertible.

Data Size

64

Description

A matrix transform is a transform by an arbitrary invertible 4-by-4 matrix.

Parent Hierarchy

Shared, shape, transform.

Parent Objects

None.

Child Objects

None.

Example

Matrix (
 1 0 0 0
 0 1 0 0
 0 0 1 0
 0 0 0 1
)

Rotate Transforms

Labels

ASCII
Rotate
Binary
rott (= 0x726F7474 )

Axis Enum Data Type

X
0x00000000
Y
0x00000001
Z
0x00000002

Data Format

AxisEnum     axis
Float32     radians
Field descriptions
axis
The axis of rotation. The value in this field must be one of these constants: X, Y, or Z.
radians
The number of radians to rotate around the axis of rotation.

Data Size

8

Description

A rotate transform rotates an object about the x, y, or z axis by a specified number of radians.

Parent Hierarchy

Shared, shape, transform.

Parent Objects

None.

Child Objects

None.

Example

Rotate (      # rotate about the z axis by -1.57 radians
 Z
 -1.57
 )

Rotate-About-Point Transforms

Labels

ASCII
RotateAboutPoint
Binary
rtap ( = 0x72746170 )

Data Format

AxisEnum     axis
Float32     radians
Point3D     origin
Field descriptions
axis
The axis of rotation.
radians
The number of radians to rotate about the axis of rotation.
origin
The point at which the rotation is to occur.

Data Size

20

Description

A rotate-about-point transform rotates an affected object by the specified number of radians about the line parallel to the value in the axis field and passing through the point specified in the origin field.

Parent Hierarchy

Shared, shape, transform.

Parent Objects

None.

Child Objects

None.

Example

Rotate (
 Y       # axis
 1.0       # radians
 2 3 4       # origin
)

Rotate-About-Axis Transforms

Labels

ASCII
RotateAboutAxis
Binary
rtaa ( = 0x72746161 )

Data Format

Point3D     origin
Vector3D     orientation
Float32     radians
Field descriptions
origin
The origin of the axis of rotation.
orientation
The orientation of the axis of rotation. This vector should be normalized.
radians
The number of radians by which an affected object is rotated.

Data Size

28

Description

A rotate-about-axis transform rotates an object about an arbitrary axis in space by a specified number of radians. The value in the origin field and the orientation vector are used to define the axis of rotation.

Parent Hierarchy

Shared, shape, transform.

Parent Objects

None.

Child Objects

None.

Example

RotateAboutAxis (
 20 0 0      # origin
 .33 .33 .34      # orientation
 1.57      # radians
)

Quaternion Transforms

Labels

ASCII
Quaternion
Binary
qtrn ( = 0x7174726E )

Data Format

Float32     w
Float32     x
Float32     y
Float32     z
Field descriptions
w
The w component of the quaternion transform.
x
The x component of the quaternion transform.
y
The y component of the quaternion transform.
z
The z component of the quaternion transform.

Data Size

16

Description

A quaternion transform rotates and twists an object in a manner determined by the mathematical properties of quaternions.

Parent Hierarchy

Shared, shape, transform.

Parent Objects

None.

Child Objects

None.

Example

Quaternion ( 0.2 0.7 0.2 1.57 )

Shader Transforms

Labels

ASCII
ShaderTransform
Binary
sdxf ( = 0x73647866)

Data Format

Matrix4x4     shaderTransform
Field descriptions
shaderTransform
A 4-by-4 matrix.

Data Size

64

Description

A shader transform transforms a shaded object into a distinct world-space coordinate system. A shader transform does not affect the current transformation hierarchy and does not affect the manner in which the object to which it is applied is drawn.

Parent Hierarchy

Data.

Parent Objects

Any shader. A shader transform always has a parent object.

Child Objects

None.

Example

Container (
 CustomShader ( )
 ShaderTransform (
  1 0 0 0
  0 1 0 0
  0 0 1 0
  2 3 4 1
 )
)

Shader UV Transforms

Labels

ASCII
ShaderUVTransform
Binary
sduv ( = 0x73647576 )

Data Format

Matrix3x3     matrix
Field descriptions
matrix
A 3-by-3 matrix.

Data Size

36

Description

A shader uv transform may be used to transform the surface uv parameterization of a geometric object prior to shading. A shader uv transform may be used to rotate a texture map.

Parent Hierarchy

Data.

Parent Objects

Any shader. A shader uv transform always has a parent object.

Child Objects

None.

Example

Container (
 TextureShader ( )
 ShaderUVTransform (
  1 0 0
  0 1 0
  0.2 0.3 1
 )
 PixmapTexture ( ... )
) 

Lights


Attenuation and Fall-Off Values

Some lights suffer attenuation; that is, a loss of intensity over distance. The application determines the degree of attenuation of a light by specifying substituends for three distinct variables in a complex term that occurs in whatever formula it uses to compute the intensity of that light at a given distance from its source. The choice of constants determines whether the light suffers attenuation and, if so, the degree to which its intensity diminishes as a function of distance. These constants are specified in a data structure of the following type.

Attenuation DataType

Float32     c0
Float32     c1
Float32     c2

Description

The attenuation factor determined by an attenuation data type is expressed by the result of replacing the variables c0, c1, c2 by the values of the fields c0, c1, c2 in the complex term (1 OVER INDEXES (not implemented)+INDEXES (not implemented)INDEXES (not implemented)+INDEXES (not implemented)INDEXES (not implemented))

(Here l is the location of the light source, p is the illuminated point, and dl, p is the distance from l to p.)

The initial intensity of a light is multiplied by its attenuation factor when the intensity of the light at a point is computed. Thus, if c0 = 1 and c1 = c2 = 0, then the light does not suffer attenuation over distance. If c1 = 1 and c0 = c2 = 0, then the intensity of the light at a point p diminishes in proportion to the distance between p and the light source, provided that that distance is at least one unit. If c2 = 1 and c0 = c1 = 0, then the intensity of the light at p diminishes in proportion to the square of the distance between p and the light source, again provided that that distance is at least one unit. If c0 = c2 = 1 and c1 = 0, then the intensity of the light at p diminishes in proportion to the sum of 1 and the square of the distance between p and the light source.

The attenuation factor is not clamped to a maximum value. Thus, for some choices of c0, c1, c2, the intensity of a light may exceed its source intensity at distances of less than one unit, driving the RGB color values of the light toward the maximum of (1, 1, 1), or pure white.

The amount of illumination that a point illuminated by a light receives from that light also depends on several other factors. Among these factors are the diffuse and specular reflection characteristics of the surface that contains that point and the relative positions of the light source, the illuminated point, and the viewer (the camera).

Light Fall-Off Values

A spot light specifies a cone of light emanating from a source location. Within the inner cone defined by the hot angle of a spot light, the light may suffer attenuation over distance from the light source. Within the outer section of the cone between the hot angle and the outer angle of a spot light, the light may suffer further attenuation.

Spot lights have a fall-off value that determines the manner of attenuation of the light from the edge of the cone defined by the hot angle to the edge of the cone defined by the outer angle. The direction of fall off is perpendicular to the ray from the source location through the center of the cone. The amount of additional attenuation determined by any fall-off value is the same along all rays from the location of the light source forming the same angle with the axis of the cone.

The following constants specify four fall-off values a spot light may have.

FallOff VALUES

None     0x00000000
Linear     0x00000001
Exponential     0x00000002
Cosine     0x00000003
Constant descriptions

None
The intensity of the light is not affected by the distance from the center of the cone to the edge of the cone.
Linear
The intensity of the light at the edge of the cone falls off at a constant rate from the intensity of the light at the center of the cone.
Exponential
The intensity of the light at the edge of the cone falls off exponentially from the intensity of the light at the center of the cone.
Cosine
The intensity of the light at the edge of the cone falls off as the cosine of the outer angle from the intensity of the light at the center of the cone.

Light Data

Labels

ASCII
LightData
Binary
lght ( = 0x6C676874 )

Data Format

Boolean     isOn
Float32     intensity
ColorRGB     color
Field descriptions
isOn
A value of True indicates that the parent light is active (is on). A value of False indicates that the parent light is inactive (is off).
intensity
The intensity of the parent light at its source. The value in this field must be in the closed interval [0, 1]. 0 is the minimum value; 1 is the maximum value.
color
The RGB color of the parent light.

Data Size

20

Description

A light data object specifies the color and source intensity of a parent light, and whether that light is currently active or inactive. A light object that does not have a light data object as a child object should be given the default values indicated below.

Note
A value of less than 1.0 in the intensity field of a light data object affects the color of the parent light. ·

Parent Hierarchy

Data.

Parent Objects

A light data object always has a parent object; the parent object is always a light object.

Child Objects

None.

Example

Container (
 AmbientLight ( )
 LightData (
  True       # is on
  0.75       # intensity
  0.7 0.3 0.4       # color
 )
)

Default Setting

True    # isOn
1.0    # intensity (full)
1 1 1    # color (white)

Ambient Light

Labels

ASCII
AmbientLight
Binary
ambn ( = 0x616D626E )

Data Format

No data.

Data Size

0

Description

Ambient light is a base amount of light that is added to the illumination of all surfaces in a scene. Ambient light has no apparent source or location; its intensity is constant, and it does not cast shadows.

Parent Hierarchy

Shared, shape, light.

Parent Objects

None.

Child Objects

Light data (optional). If no child object is specified, the light should have the properties specified in the default setting of a light data object.

Example

Container (
 ViewHints ( )
 .
 .
 .
 BeginGroup ( DisplayGroup ( ) )
  Container (
   AmbientLight ( )
   LightData ( ... )
  )
  Container (
   DirectionalLight( )
   LightData ( ... )
  )
 EndGroup ( )
)

Directional Lights

Labels

ASCII
DirectionalLight
Binary
drct ( = 0x64726374 )

Data Format

Vector3D     direction
Boolean     castsShadows
Field descriptions
direction
The direction of the directional light. This vector should be normalized.
castsShadows
A value of True indicates that the light casts shadows; a value of False indicates that the light does not cast shadows.

Data Size

16

Description

A directional light is a light that emits parallel rays in a specific direction. A directional light may be set to cast shadows.

Note
Some style objects also specify whether or not objects in a scene shall receive shadows. However, objects in the scope of a receive shadows style set to False do not receive shadows, whether or not they are also appropriately situated to receive shadows from a light set to cast shadows. ·

Parent Hierarchy

Shared, shape, light.

Parent Objects

None.

Child Objects

Light data (optional). If no child object is specified, the light should have the properties specified in the default setting of a light data object.

Example

Container (
 DirectionalLight ( 1 0 0 True )
 LightData ( ... )
)

Point Lights

Labels

ASCII
PointLight
Binary
pntl ( = 0x706E746C )

Data Format

Point3D     location
Attenuation     attenuation
Boolean     castsShadows
Field descriptions
location
The location of the source of the point light.
attenuation
This structure determines the amount that the intensity of the light diminishes over distance. See the section "Attenuation and Fall-Off Values" on page -53 for a description of this structure.
castsShadows
A value of True specifies that objects illuminated by the light are to cast shadows; a value of False specifies that objects illuminated by the light are not to cast shadows.

Data Size

20

Description

A point light is a light that emits rays in all directions from a specific point source. A point light may suffer attenuation over distance, and may cast shadows.

Note
Some style objects also specify whether or not objects in a scene shall receive shadows. However, objects in the scope of a receive shadows style set to False do not receive shadows, whether or not they are also appropriately situated to receive shadows from a light set to cast shadows. ·

Parent Hierarchy

Shared, shape, light.

Parent Objects

None.

Child Objects

Light data (optional). If no child object is specified, the light should have the properties specified in the default setting of a light data object.

Example

BeginGroup ( DisplayGroup ( ) )
 Triangle ( ... )
 Box ( ... )
 Container (
  PointLight (
   -10, 1, -1       # location
   1 0 1       # attenuation
   True       # casts shadows
  )
  LightData ( ... )
 )
EndGroup ( )

Spot Lights

Labels

ASCII
SpotLight
Binary
spot ( = 0x73706F74 )

Data Format

Point3D     location
Vector3D     orientation
Boolean     castsShadows
Attenuation     attenuation
Float32     hotAngle
Float32     outerAngle
FallOffEnum     fallOff
Field descriptions
location
The location of the source of the spot light.
orientation
The orientation of the cone of light emitted by the spot light. The direction of this vector is toward the light source. This vector should be normalized.
castsShadows
A value of True specifies that objects illuminated by the light are to cast shadows; a value of False indicates that objects illuminated by the light are not to cast shadows.
attenuation
This structure determines the amount that the intensity of the light diminishes over distance. See the section "Attenuation and Fall-Off Values" on page -53 for a description of this structure.
hotAngle
The half-angle (specified in radians) from the center of the cone of light within which the light remains at constant full intensity. The value in this field should be in the half-open interval [0, p/2).
outerAngle
The half-angle (specified in radians) from the center to the edge of the cone of the spot light. The value in this field should be in the half-open interval [0, p/2), and should not be less than the value in the hotAngle field.
fallOff
The fall-off value for the spot light. The value in this field determines the manner of attenuation of the light from the edge of the hot angle to the edge of the outer angle. See the section "Attenuation and Fall-Off Values" on page -53 for a description of the constants that can be used in this field.

Data Size

44

Description

A spot light is a light source that emits a circular cone of light in a specific direction from a specific location. Every spot light has a hot angle and an outer angle that together define the shape of the cone of light and the amount of attenuation that occurs from the center of the cone to the edge of the cone. The attenuation of the light's intensity from the edge of the hot angle to the edge of the outer angle is determined by the light's fall-off value.

Note
Some style objects also specify whether or not objects in a scene shall receive shadows. Thus, conflicting shadowing instructions can be sent to a renderer. The outcome in such a case is renderer specific, application specific, or both. ·

Parent Hierarchy

Shared, shape, light.

Parent Objects

None.

Child Objects

Light data. If no child object is specified, the light should have the properties specified in the default setting of a light data object.

Example

Container (
 SpotLight (
  0 9 0       # location
  0 1 0       # orientation
  True       # castsShadows
  0 0 1       # attenuation
  0.3       # hotAngle
  0.5       # outerAngle
  Linear       # fallOff
 )
 LightData ( ... )
) 

Cameras


Camera Placement

Labels

ASCII
CameraPlacement
Binary
cmpl ( = 0x636D706C )

Data Format

Point3D     location
Point3D     pointOfInterest
Vector3D     upVector
Field descriptions
location
The location (in world-space coordinates) of the eye point of the parent camera.
pointOfInterest
The point at which the parent camera is aimed, in world-space coordinates.
upVector
The up vector of the parent camera. This vector should be perpendicular to the viewing direction defined by the values in the location and pointOfInterest fields. This vector should be normalized.

Data Size

36

Description

A camera placement object defines the location, point of interest, and orientation of its parent camera, in world-space coordinates. The camera vector (also called the view vector) is defined to be the vector pointOfInterest - location. This vector is normal to the projection plane and to the clipping planes, and the distances from the camera to those planes are measured along this vector.

A camera placement object determines the coordinate system of the projection plane as follows. The origin of the projection plane is the point at the intersection of the projection plane and the line through the location and point of interest. The y axis of the projection plane coincides with the projection onto the projection plane of the up vector, and the x axis of the projection plane is the axis such that it, the y axis of the projection plane, and the inverse of the camera vector form a righthanded coordinate system.

If no camera placement object is specified for a camera, that camera should receive the default camera placement values specified below.

Parent Hierarchy

Data.

Parent Objects

View angle aspect camera, view plane camera, orthographic camera. A camera placement object always has a camera as a parent object.

Child Objects

None.

Example

Container (
 ViewAngleAspectCamera ( ... )
 CameraPlacement (
  0 0 30       # location on z axis
  0 0 0       # point of interest is the origin
  0 1 0       # up vector aligned with yaxis
 )
)

Default Values

0 0 1    # location
0 0 0    # pointOfInterest
0 1 0    # upVector 

Camera Range

Labels

ASCII
CameraRange
Binary
cmrg ( = 0x636D7267 )

Data Format

Float32     hither
Float32     yon
Field descriptions
hither
The distance from the location of the parent camera to the near clipping plane. The value in this field should be greater than 0.
yon
The distance from the location of the parent camera to the far clipping plane. The value in this field should be greater than the value in the hither field.

Data Size

8

Description

A camera range object is used to set the near and far clipping planes of its parent camera. Distances are measured in the direction defined by the camera vector, which is normal to both clipping planes.

Parent Hierarchy

Data.

Parent Objects

View angle aspect camera, view plane camera, orthographic camera. A camera placement object always has a parent object.

Child Objects

None.

Example

Container (
 ViewPlaneCamera ( ... )
 CameraPlacement ( ... )
 CameraRange (
  .01         # hither
  75         # yon
 )
)

Camera Viewport

Labels

ASCII
CameraViewPort
Binary
cmvp ( = 0x636D7670 )

Data Format

Point2D     origin
Float32     width
Float32     height
Field descriptions
origin
The origin of the view port of the parent camera. The abscissa and ordinate of this point should lie in the closed interval [-1, 1]. The value in this field is the upper-left corner of the view port.
width
The width of the view port of the parent camera. The value in this field should lie in the half-open interval (0, 2], and should not be greater than the absolute value of the difference between 1 and the abscissa of the origin.
height
The height of the view port of the parent camera. The value in this field should lie in the half-open interval (0, 2], and should not be greater than the difference between -1 and the ordinate of the origin.

Data Size

16

Description

Every camera specifies the dimensions of the largest (rectangular) image that that camera can produce (called the parent image), either explicitly or implicitly. The parent image may be specified by giving the coordinates of its vertices, by giving the height to width ratio of its sides, or in some other fashion. The camera view port object specifies the subregion of the parent image that is actually to be drawn. The value in the origin field defines the upper left corner of the view port; the values in the other two fields determine the lengths of the sides of the view port.

The default setting specified below sets the view port equal to the parent image. Other settings may be used to clip the parent image to desired specifications.

Camera view port specifications are made in a coordinate system in which the height-to-width ratio of the parent image is one to one, and the coordinates of the upper-left and lower-right corners of that image are (-1, 1) and (1, -1), respectively. The actual height-to-width ratio of the parent image may not be one to one. If not, then view port specifications should be made under the assumption that the view port will be rescaled by the inverse of the height-to-width ratio of the parent image after the view port specifications have been made. Thus, if the height-to-width ratio of the parent image is i/j, and the height-to-width ratio of the image actually to be drawn is i'/j', then the height-to-width ratio of the rectangle specified in the view port should be i'j/ij'. Any view port having a different height-to-width ratio will result in a distorted image.

Parent Hierarchy

Data.

Parent Objects

View angle aspect camera, view plane camera, orthographic camera. A camera viewport object always has a parent object.

Child Objects

None.

Example

CameraViewPort (
 -0.5 0.5
 1.0
 1.0
)

Default Values

-1 1    # origin at upper left corner of the parent image
2    # width is the entire width of the parent image
2    # height is the entire height of the parent image 

Orthographic Cameras

Labels

ASCII
OrthographicCamera
Binary
orth ( = 0x6F727468 )

Data Format

Float32     left
Float32     top
Float32     right
Float32     bottom
Field descriptions
left
The x coordinate (in the camera's coordinate system) of the upper left corner of the front face of the view volume. Or, the distance from the center of the camera lens (that is, the view rectangle) to the left side of the lens.
top
The y coordinate (in the camera's coordinate system) of the upper left corner of the front face of the view volume. Or, the distance from the center of the camera lens (that is, the view rectangle) to the top side of the lens.
right
The x coordinate (in the camera's coordinate system) of the lower right corner of the front face of the view volume. Or, the distance from the center of the camera lens (that is, the view rectangle) to the right side of the lens.
bottom
The y coordinate (in the camera's coordinate system) of the lower right corner of the front face of the view volume. Or, the distance from the center of the camera lens (that is, the view rectangle) to the left side of the lens.

Data Size

16

Description

An orthographic camera is a parallel projection camera that employs an orthographic projection to obtain its image. The direction of projection is the opposite of the camera vector (that is, location - pointOfInterest), the projection plane is the near clipping plane, and the projection is thus along a normal to the projection plane. The origin of the projection plane is the point at hither (camera vector); if the absolute values of the fields top and bottom are equal, and the absolute values of the fields left and right are equal, then the origin of the projection plane is at the center of the front face of the view volume.

Parent Hierarchy

Shared, shape, camera.

Parent Objects

View hints (sometimes).

Child Objects

Camera placement, camera range, camera view port (optional). If a camera does not have one of these child objects, then it should be assigned the default values specified in the section on that child object.

Example

OrthographicCamera (
 -10
 -10
 10
 10
)

View Plane Cameras

Labels

ASCII
ViewPlaneCamera
Binary
vwpl ( = 0x7677706C )

Data Format

Float32     viewPlane
Float32     halfWidthAtViewPlane
Float32     halfHeightatViewPlane
Float32     centerXOnViewPlane
Float32     centerYOnViewPlane
Field descriptions
viewPlane
The distance from the camera location to the view plane.
halfWidthAtViewPlane
One half the width of the view plane window.
halfHeightAtViewPlane
The value in the halfWidthAtViewPlane field divided by the horizontal-to-vertical aspect ratio of the view port. The value in this field determines the half-height of the view plane window.
centerXOnViewPlane
The x coordinate of the center of the view plane window, specified in the view plane coordinate system.
centerYOnViewPlane
The y coordinate of the center of the view plane window, specified in the view plane coordinate system.

Data Size

20

Description

A view plane camera is a type of perspective camera defined in terms of an arbitrary view plane. The camera vector is normal to the view plane, and the distance from the camera location to the view plane is measured in the direction defined by the camera vector. The window on the view plane and its center are defined in the projection plane coordinate system determined by the camera's camera placement object. The view volume of a view plane camera is determined by the four rays through the camera location and through the four corners of the rectangular window on the view plane, together with the two clipping planes. The view volume is the frustum whose top is the rectangle having as its vertices the intersections of these four rays with the near clipping plane and whose base is the rectangle having as its vertices the intersections of these rays with the far clipping plane.

The center of projection of a view plane camera is the camera location point. If the center of the window defined by a view plane camera is not at the origin of the view plane, then the camera yields an off-axis view. The projection determined by a view plane camera may have one, two, or three principal vanishing points.

A view plane camera may be used to obtain a close-up image of a single object by using the approximate center and dimensions of that object to specify the size and location of the window on the view plane.

Parent Hierarchy

Shared, shape, camera.

Parent Objects

View hints (sometimes).

Child Objects

Camera placement, camera view port, camera range (optional). If a camera does not have one of these child objects, then it should be assigned the default values specified in the section on that child object.

Example

Container (
 ViewPlaneCamera (
  20
  15.0
  15.0
  18
  29
 )
 CameraPlacement ( ... )
 CameraRange ( ... )
 CameraViewPort ( ... )
)

View Angle Aspect Cameras

Labels

ASCII
ViewAngleAspectCamera
Binary
vana ( = 0x76616E61 )

Data Format

Float32     fieldOfView
Float32     aspectRatioXtoY
Field descriptions
fieldOfView
An angle, specified in radians, that defines the maximum field of view of the camera. The value in this field should lie in the open interval (0, p).
aspectRatioXtoY
The horizontal-to-vertical aspect ratio of the camera. If the value in this field is less than 1.0, the camera's field of view is vertical; otherwise, the camera's field of view is horizontal.

Data Size

8

Description

A view angle aspect camera is a type of perspective camera defined in terms of a field of view angle and a horizontal-to-vertical aspect ratio. The aspect ratio determines the ratio of the base to the height of the rectangles that define the top and base of the camera's view volume. These rectangles lie in the near and far clipping planes, respectively, are upright in the camera's coordinate system, and are centered at the points of intersection of the line along the camera vector and the clipping planes.

If the aspect ratio is less than 1.0, then the field of view angle is in the x = 0 plane of the camera's coordinate system. Otherwise, the field of view angle is in the y = 0 plane of the camera's coordinate system. In both cases the rays that define the angle intersect in the camera location point, and the field of view angle is bisected by the ray from the camera location defined by the camera vector. The center of projection is the camera location point. The view volume of a view angle aspect camera is symmetrical about its center line. The method of projection determined by a view angle aspect camera has one principal vanishing point, located at the origin of the projection plane.

Parent Hierarchy

Shared, shape, camera.

Parent Objects

View hints (sometimes).

Child Objects

Camera placement, camera view port, camera range (optional). If a camera does not have one of these child objects, then it should be assigned the default values specified in the section on that child object.

Example

Container (
 ViewAngleAspectCamera (
  1.7
  1.0
 )
 CameraPlacement ( ... )
 CameraRange ( ... )
 CameraViewPort ( ... )
) 

Groups


Display Groups

Labels

ASCII
DisplayGroup
Binary
dspg ( = 0x6C697374 )

Data Format

No data.

Data Size

0

Description

A display group is a list of drawable objects and containers the root objects of which are drawable objects. Types of drawable objects include geometric objects, attribute sets, styles, transforms, and other display groups. A display group is delimited by begin group and end group objects.

Parent Hierarchy

Shared, shape, group.

Parent Objects

None.

Child Objects

Display group state (optional). If no child object is specified, group state flags should be set to the default values specified in the section "Display Group States" on page -87.

Example

BeginGroup ( Display Group( ) )
 SubdivisionStyle ( Constant 32 32 )
 Container (
  Mesh ( ... )
  VertexAttributeSetList ( ... )
  FaceAttributeSetList ( ... )
 )
 Container (
  Mesh ( ... )
  VertexAttributeSetList ( ... )
  FaceAttributeSetList ( ... )
 )
 .
 .
 .
EndGroup ( )

Ordered Display Groups

Labels

ASCII
OrderedDisplayGroup
Binary
ordg ( = 0x6F72646C)

Data Format

No data.

Data Size

0

Description

An ordered display group is a display group in which the objects listed are sorted by type. The elements of an ordered display group are listed in the following order: transforms, styles, attribute sets, shaders, geometric objects, other groups. An ordered display group is delimited by begin group and End group objects.

Parent Hierarchy

Shared, shape, group, display group.

Parent Objects

None.

Child Objects

Display group state (optional). If no child object is specified, group state flags should be set to the default values specified in the section "Display Group States" on page -87.

Example

BeginGroup ( OrderedDisplayGroup ( ) )
 RotateTransform ( ... )
 ScaleTransform ( ... )
 SubdivisionStyle ( ... )
 BackfacingStyle ( ... )
 BeginGroup ( DisplayGroup ( ) )
  .
  .
  .
 EndGroup ( )
EndGroup ( )

Light Groups

Labels

ASCII
LightGroup
Binary
lghg ( = 0x676C6768 )

Data Format

No data.

Data Size

0

Description

A light group is simply a list of light objects. A light group is delimited by begin group and end group objects.

Parent Hierarchy

Shared, shape, group.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup ( LightGroup ( ) )
 AmbientLight ( )
 DirectionalLight ( ... )
 SpotLight ( ... )
EndGroup ( )

I/O Proxy Display Groups

Labels

ASCII
IOProxyDisplayGroup
Binary
iopx ( = 0x70727879)

Data Format

No data.

Data Size

0

Description

An I/O proxy display group is used to place distinct specifications of the same model together in a group. The purpose of an I/O proxy display group is to permit a reading application that does not recognize all specifications of a model to pass over those that it does not recognize until it encounters one that it does recognize and can use to recover the model. For example, a pentagon may be represented by either a mesh or a polygon. If both representations are placed together in an I/O proxy display Group, then a reading application that recognizes meshes but does not recognize polygons can recover the pentagon from its mesh representation.

Representations of a model in an I/O proxy display Group should appear in preferential order: any representation of a model is to be preferred to any other representation of that model occurring later in the group. While drawing, bounding, or picking, the reading application should use the first representation of the model that it recognizes and should ignore all other representations.

Parent Hierarchy

Shared, shape, group.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup ( IOProxyDisplayGroup ( ) )
 Polygon ( ... )           # first preference
 GeneralPolygon ( ... )           # second preference
 Mesh           # third preference
EndGroup ( )

Info Groups

Labels

ASCII
InfoGroup
Binary
info ( = 0x696E666F )

Data Format

No data.

Data Size

0

Description

An info group is a list of string objects delimited by begin group and end group objects. An info group allows objects containing information in text form to be placed together in a group.

Parent Hierarchy

Shared, shape, group.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup ( InfoGroup ( ) )
 CString ( ... )
 .
 .
 .
 CString ( ... )
EndGroup ( )

Groups (Generic)

Labels

ASCII
Group
Binary
grup ( = 0x67727570 )

Data Format

No data.

Data Size

0

Description

A group (generic) is simply a list of drawable objects, delimited by begin group and end group objects.

Parent Hierarchy

Shared, shape, group.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup ( Group ( ) )
 .
 .
 .
EndGroup ( )

Begin Group Objects

Labels

ASCII
BeginGroup
Binary
bgng ( = 0x62676E67)

Description

A begin group object is used to declare a group and to delimit the start of that group. Every group must begin with a begin group object.

Parent Hierarchy

3DMF.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup(
 DisplayGroup ( )         # empty group
)
EndGroup ( )

End Group Objects

Labels

ASCII
EndGroup
Binary
endg ( = 0x656E6467 )

Data Format

No data.

Data Size

0

Description

An end group object is placed immediately after the last object in a group and is used to delimit that group.

Parent Hierarchy

3DMF.

Parent Objects

None.

Child Objects

None.

Example

BeginGroup ( DisplayGroup ( ) )           # empty group
EndGroup ( )

Display Group States

Labels

ASCII
DisplayGroupState
Binary
dgst ( = 0x64677374)

Display Group State Flags

None      0x00000000
IsInline       0x00000001
DoNotDraw      0x00000002
NoBoundingBox       0x00000004
NoBoundingSphere       0x00000008
DoNotPick      0x00000010
Constant descriptions

None
No flags are specified.
IsInline
The parent group is to be executed inline (that is, without pushing the graphics state on a stack before execution and popping it after execution). This flag is used to prevent the objects in the parent group from inheriting properties specified at a higher level in a hierarchical model containing the parent group. If this flag is set, then objects in the parent group receive only those properties specified in that group.
DoNotDraw
The parent group is not to be drawn when rendering or picking. If this flag is set, then the parent group is not to be traversed when it is encountered in a hierarchical model.
NoBoundingBox
The bounding box of the parent group is not to be used for rendering.
NoBoundingSphere
The bounding sphere of the parent group is not to be used for rendering.
DoNotPick
The parent group is not eligible for inclusion in the hit list of a pick object.

Data Format

DisplayGroupStateFlags          traversalFlags
Field descriptions
traversalFlags
A bitfield expression specifying one or more display group state flags.

Data Size

4

Description

A display group state object is used to specify a set of flags that determines how its parent display group is to be traversed during rendering or picking and whether a bounding box or bounding sphere is to be used during rendering. If a display group does not have a display group state object as a child object, that group's state flags should be set to the default state specified below.

In a text file, a display group state object should be placed together with a group object in the begin group object that immediately precedes that group.

Parent Hierarchy

Data.

Parent Objects

Display group, ordered display group. A display group state object always has a parent object.

Child Objects

None.

Default Display Group State Flags

None (= 0x00000000)

Example

BeginGroup (
 DisplayGroup ( ) 
 DisplayGroupState ( DoNotPick )
)
.
.
.
EndGroup ( ) 

Renderers


Wireframe Renderers

Labels

ASCII
WireFrame
Binary
wrfr ( = 0x77726672)

Data Format

No data.

Data Size

0

Description

A wireframe renderer creates line drawings of models. Such a renderer does not decompose polylines or polygons during rendering. It can render all backfacing, point, and edge drawing styles.

Parent Hierarchy

Shared, renderer.

Parent Objects

View hints (sometimes).

Child Objects

None.

Example

Container (
 ViewHints ( )
 Wireframe ( )
 ViewPlaneCamera ( ... )
 PointLight ( ... )
 BeginGroup ( DisplayGroup ( ) )
  .
  .
  .
 EndGroup ( )
)

Interactive Renderers

Labels

ASCII
InteractiveRenderer
Binary
ctwn ( = 0x6374776E )

Data Format

No data.

Data Size

0

Description

The interactive renderer uses a fast and accurate depth-sorting algorithm for drawing solid, shaded surfaces as well as vectors. The interactive renderer is also capable of rendering highly detailed, complex models with very realistic surface illumination and shading, but at the expense of time and memory.

Parent Hierarchy

Shared, renderer.

Parent Objects

View hints (sometimes).

Child Objects

None.

Example

Container (
 ViewHints ( )
 InteractiveRenderer ( )
 ViewPlaneCamera ( ... )
 PointLight ( ... )
 BeginGroup ( DisplayGroup ( ) )
  .
  .
  .
 EndGroup ( )
)

Generic Renderers

Labels

ASCII
GenericRenderer
Binary
gnrr ( = 0x676E7272)

Data Format

No data.

Data Size

0

Description

A generic renderer performs no rendering functions, but may be used to pick or to accumulate state.

Parent Hierarchy

Shared, renderer.

Parent Objects

View hints (sometimes).

Child Objects

None.

Example

Container (
 ViewHints ( )
 GenericRenderer ( )
 ViewPlaneCamera ( ... )
 PointLight ( ... )
 BeginGroup ( DisplayGroup ( ) )
  .
  .
  .
 EndGroup ( )
) 

Shaders


Shader Data Objects

Labels

ASCII
Shader
Binary
shdr ( = 0x73686472)

Shader UV Boundary TYPES

Wrap
0x00000000
Clamp
0x00000001
Constant descriptions

Wrap
Values outside the valid range of uv values are to be wrapped. To wrap a shader effect is to replicate the entire effect across the mapped area.
Clamp
Values outside the valid range of uv values are to be clamped. To clamp a shader effect is to replicate the boundaries of the effect across the portion of the mapped area that lies outside the valid range.

Data Format

ShaderUVBoundaryEnum         uBounds
ShaderUVBoundaryEnum         vBounds
Field descriptions
uBounds
The value in this field determines whether values in the u parametric direction that lie outside the valid range are wrapped or clamped by the parent shader.
vBounds
The value in this field determines whether values in the v parametric direction that lie outside the valid range are wrapped or clamped by the parent shader.

Data Size

8

Description

A shader data object is a boundary-handling method specifier that determines how a parent shader handles parametric uv values that are outside the valid range (namely, 0 to 1).

Parent Hierarchy

Data.

Parent Objects

Any shader. A shader data object always has a parent object.

Child Objects

None.

Example

Container (
 CustomShader ( ... )
 ShaderData ( Wrap Clamp )
)

Default Values

Wrap Wrap

Texture Shaders

Labels

ASCII
TextureShader
Binary
txsu ( = 0x74787375)

Data Format

No data.

Data Size

0

Description

A texture shader is used to apply a texture to a surface in shading.

Parent Hierarchy

Shared, shape, shader, surface shader.

Parent Objects

None.

Child Objects

Pixmap texture object. A texture shader always has one child object.

Example

Container (
 TextureShader ( )
 PixmapTexture ( ... )
)

Pixmap Texture Objects

Labels

ASCII
PixmapTexture
Binary
txpm (= 0x7478706D)

Endian TypeS

BigEndian     0x00000000
LittleEndian     0x00000001
Constant descriptions

BigEndian
Packing is to be done in a big-endian manner.
LittleEndian
Packing is to be done in a little-endian manner.

Pixel TypeS

RGB8     0x00000000
RGB16     0x00000001
RGB24     0x00000002
RGB32     0x00000003
Constant descriptions

RGB8
8 bits are devoted to each pixel in the pixmap.
RGB16
16 bits are devoted to each pixel in the pixmap.
RGB24
24 bits are devoted to each pixel in the pixmap.
RGB32
32 bits are devoted to each pixel in the pixmap.

Data Format

Uns32     width
Uns32     height
Uns32     rowBytes
Uns32     pixelSize
PixelTypeEnum     pixelType
EndianEnum     bitOrder
EndianEnum     byteOrder
RawData     image[rowBytes * height]
Field descriptions
width
The width of the pixmap. The value in this field must be greater than 0.
height
The height of the pixmap. The value in this field must be greater than 0.
rowBytes
The number of bytes in a row of the pixmap. The value in this field cannot be less than the product of the values in the width and pixelSize fields.
pixelSize
The size of each pixel in the pixmap. The value in this field must be greater than 0 and less than 32.
pixelType
The type of the pixels of the pixmap.
bitOrder
The order in which the bits in a byte are addressed. This field must contain one of the constants BigEndian or LittleEndian.
byteOrder
The order in which the bytes in a word are addressed. This field must contain one of the constants BigEndian or LittleEndian.
image[]
The array that defines the pixmap.

Data Size

28 + rowBytes * height + padding

Description

A pixmap texture object is a generic method of transferring pixmap data that is used in conjunction with a texture shader.

Parent Hierarchy

Shared, texture.

Parent Objects

Texture shader. A pixmap texture object sometimes, but not always, has a parent object.

Child Objects

None.

Example

PixmapTexture (
 256 256          # width/height
 128          # rowBytes
 32          # pixelSize
 RGB24
 BigEndian BigEndian
 0x00123232...
 0x...
) 

View Objects


View Hints

Labels

ASCII
ViewHints
Binary
vwhn ( = 0x7677686E )

Data Format

No data.

Data Size

0

Description

The view hints object is used to group together all of the objects needed to render an image from a model (that is, a renderer, a camera, lights, and any additional information to be supplied to the renderer). These other objects occur as child objects to the view hints object; a container may be used to group them together. The container holding a view hints object and its associated rendering specifications should be placed immediately before the models to be rendered according to those specifications.

A metafile may contain more than one view hints object. If a metafile contains more than one view hints object, the specifications associated with each view hints object are inherited by all subsequent view hints objects, unless overridden by contrary specifications. Accordingly, a subsequent view hints object need have as child objects only those specifications that differ from those of its predecessors. For example, you may wish to render the same model using different cameras, while keeping the lights and other specifications intact. Once the initial specifications have been made, you need only specify a different camera together with a new view hints object. The model may be placed in the scope of a subsequent view hints object through the use of a reference object; the specification of the model need not be repeated.

Parent Hierarchy

Shared.

Parent Objects

None.

Child Objects

Renderer, camera, lights (as many as desired), attribute set, image dimensions, image mask, image clear color (all optional).

Example

3DMetafile ( 1 0 Normal toc> )
Container (
 ViewHints ( )
 Container (
  ViewAngleAspectCamera ( 0.73 1.0 )
  CameraPlacement (
   0 0 30
   0 0 0
   0 1 0
  )
 )
 DirectionalLight ( -0.7 -0.7 -0.65 )
 Container (
  AttributeSet ( )
  DiffuseColor ( 0.2 0.2 0.2 )
  SpecularControl ( 3 )
 )
 ImageDimensions ( 200 200 )
)
ref1:
BeginGroup ( DisplayGroup ( ) )
.
.
.
EndGroup ( )
Container (
 ViewHints ( )
 Container (
  ViewAngleAspectCamera ( 0.73 1.0 )
  CameraPlacement (
   0 10 0
   0 0 0
   0 1 0
  )
 )
)
Reference ( 1 )

Image Masks

Labels

ASCII
ImageMask
Binary
immk ( = 0x696D6D6B )

Data Format

Uns32     width
Uns32     height
Uns32     rowBytes
RawData     image[rowBytes * height]
Field descriptions
width
The width, in bits, of the bitmap whose bits are listed in the array image[]. The value in this field should be greater than 0.
height
The height, in bits, of the bitmap whose bits are listed in the array image[]. The value in this field should be greater than 0.
rowBytes
The number of bytes in a row of the bitmap.
image[]
An array of bit specifications.

Data Size

12 + (rowBytes * height) + padding

Description

An image mask is a bitmap that is used to mask out certain portions of an image. The values in the width and height fields of an image mask specify the boundaries of the rectangular subregion of an image that is actually to be drawn. (Width and height are measured from the upper-left corner of the image to which a mask is applied.) Each bit listed in the array images[] corresponds to 1 pixel in the rectangle defined by the width and height of the mask. If a bit is set, then the corresponding pixel is drawn with the color determined by the underlying image. If a bit is clear, then the corresponding pixel is drawn black. Normally, an image mask is applied to an image after that image has been rasterized.

An image dimensions object may be used together with an image mask: the former may be used to clip an image, and the latter may be used to filter the clipped image.

Parent Hierarchy

Data, view hints data.

Parent Objects

View hints. An image mask always has a parent object.

Child Objects

None.

Example

3DMetafile ( 1 0 Normal toc> )
Container (
 ViewHints ( )
 ImageDimensions ( 32 32 )
 ImageClearColor ( 1 1 1 )
 ImageMask (
  32 32              # width, height
  4              # rowBytes
  BigEndian              # bitOrder
  0x000000000FFFF8000FFFF8000FFFF800
  0x0FFFF8000FFFF8000FFFF8000FFFFFE0
  0x0FFFFFE00FFFFFE00FFFFFE00FFFFFE0
  0x0FFFFFE00FFFFFE00FFFFFE00FFFFFE0
  0x0FFFFFE00FFFFFE00FFFFFE00FFFFFE0
  0x0FFFFFE00FFFFFE00FFFFFE00FFFFFE0
  0x0C61FFE00F24FFE00E64FFE00F24FFE0
  0x0F24FFE00C61FFE00FFFFFE000000000
 )
)
Rotate ( X 0.25 )
Rotate ( Y 0.23 )
Container (
 Torus ( 0 0.7 0 0 0 1 1 0 0 0 0 0 0.7 )
 Container (
  AttributeSet ( )
  DiffuseColor ( 0.2 0.9 0.9 )
 )
)

Image Dimensions Objects

Labels

ASCII
ImageDimensions
Binary
imdm ( = 0x696D646D)

Data Format

Uns32     width
Uns32     height
Field descriptions
width
The preferred width, in pixels, of the displayed portion of an image.
height
The preferred height, in pixels, of the displayed portion of an image.

Data Size

8

Description

An image dimensions object is used to specify the height and width of the rectangular portion of an image that is to be displayed. The height and width of an image dimensions object are measured from the upper-left corner of the image to which that image dimensions object is applied. Normally, an image is rasterized before an image dimensions object is applied to it. An image dimensions object may be used together with an image mask: the former may be used to clip an image, and the latter may be used to filter the clipped image.

Parent Hierarchy

Data, view hints data.

Parent Objects

View hints. An image dimensions object always has a parent object.

Child Objects

None.

Example

Container (
 ViewHints ( )
 ImageDimensions ( 32 32 )
 ImageMask ( ... )
)

Image Clear Color Objects

Labels

ASCII
ImageClearColor
Binary
imcc ( = 0x696D6363 )

Data Format

ColorRGB     clearColor
Field descriptions
clearColor
The RGB color to be given to the visible background of a model when an image is rendered from that model.

Data Size

4

Description

An image clear color object is used to assign color to the background of a model in a rendered image when the model does not itself completely fill that image.

Parent Hierarchy

Data, view hints data.

Parent Objects

View hints. An image clear color object always has a parent object.

Child Objects

None.

Example

Container (
 ViewHints ( )
 ImageDimensions ( ... )
 ImageClearColor ( 1 1 1 )
 .
 .
 .
) 

Unknown Objects


Unknown Text

Labels

ASCII
UnknownText
Binary
uktx ( = 0x756B7478 )

Data Format

String     asciiName
String     contents
Field descriptions
asciiName
The object type of the unknown object, enclosed in double quotation marks.
contents
The specification (without encapsulation) of the unknown object, enclosed in double quotation marks. Blank space and comments in the original object specification of the unknown object may be omitted when this field is written.

Data Size

sizeof(asciiName) + sizeof(contents)

Description

An unknown text object is used to transport unknown data found in a text file. It is an encapsulated replica of that unknown data. In the usual case, an unknown text object contains an ill-formed object specification. Your file reading program may be designed to transport the data contained in an unknown text object, to validate and convert the data to a specification of a known object, or to discard the data.

An unknown text object may occur in a binary file as well as in a text file.

Parent Hierarchy

Shared, shape.

Parent Objects

Any object that may have a child object may be a parent object to an unknown text object.

Child Objects

None.

Example

UnknownText (
 "Sphere"           # unknown object type
 "1 0 0   0 1 0   0 0 1   0 0 a"  # illegal specification
)

Unknown Binary

Labels

ASCII
UnknownBinary
Binary
ukbn ( = 0x756B626E )

Data Format

Int32     objectType
Uns32     objectSize
EndianEnum     byteOrder
RawData     objectData[objectSize]
Field descriptions
objectType
The binary representation of the type of the unknown object.
objectSize
The size of the unknown object.
byteOrder
The byte order of the unknown object. The information in this field is needed to transport unknown data between processors and permits parsing endian-specific primitives contained in the object data.
objectData[]
The specification of the unknown object in the form of raw data.

Data Size

12 + sizeof(objectData)

Description

An unknown binary object is used to transport unknown data found in a binary file. It is an encapsulated replica of that unknown data. In the usual case, an unknown binary object contains an ill-formed object specification. Your file reading program may be designed to transport the data contained in an unknown text object, to validate and convert the data to a specification of a known object, or to discard the data.

An unknown binary object may occur in a text file as well as in a binary file.

Parent Hierarchy

Shared, shape.

Parent Objects

None.

Child Objects

None.

Example

UnknownBinary (
 1701605476
 4
 BigEndian
 0x0AB2
) 

3D Metafile Reference
© Apple Computer, Inc.